Static computer programming languages such as C, C++, Objective-C, and other C dialects typically require application programs to be compiled and linked before they are executable. In particular, according to the traditional static application development method, there are two main steps to building an application: 1) a compiler reads each source code file and produces an object file for each of the source code files; 2) a linker reads all the object files and combines them into a single application program. One disadvantage of the traditional static application development method is that the linker processes all the object files regardless of whether they will be called when the application program executes. As such, during application program development, time is spent linking object files that may not be used at runtime.
Dynamically linking statically compiled languages can reduce some of the linker overhead described above. One prior art dynamic linking technique calls for dynamically linking object file libraries at run-time. However, this prior art technique requires that unresolved references (e.g., external function calls, references to external variables, etc.) be verified with symbols in an object file library interface, prior to run-time. One disadvantage of this prior art technique is that time is spent verifying unresolved references that may never be called at run-time.